package model

import (
	"time"

	"gddgame.cc/galaxy/common/dsl/game/achievement"
	"gddgame.cc/galaxy/common/dsl/game/stat"
	"gddgame.cc/galaxy/utils/orm"
)

var (
	DefaultUser = &User{}
)

type User struct {
	// 作为内部id，关联内部数据
	Id int `json:"id" orm:"auto" sql:"INT"`
	// 链接平台的openid，通信中string的使用：可以不需要进行hashid处理
	// 使用平台相关服务时的user识别
	OpenId string `json:"open_id" sql:"VARCHAR"`

	CreateTime *time.Time `json:"create_time" orm:"createTime" sql:"DATETIME"`
	UpdateTime *time.Time `json:"update_time" orm:"updateTime" sql:"DATETIME"`

	// 用户模型
	BaseId int    `json:"base_id" sql:"INT"`
	Entity string `json:"entity" sql:"VARCHAR"`

	// 用户的货币信息：与实际游戏同步
	Gold int `json:"gold" sql:"INT"`

	SingleStar  int `json:"single_star" sql:"INT"`
	SingleScore int `json:"single_score" sql:"INT"`
	OnlineScore int `json:"online_score" sql:"INT"`

	Achievements map[int]*achievement.UserAchievement `json:"achievement" sql:"JSON"`

	IsSystem bool `json:"is_system" sql:"TINYINT"`

	Score int `json:"score" sql:"score"`

	*stat.StatInfo

	//*orm.Schema `orm:"schema"`
}

func (user *User) GetId() int {
	return user.Id
}

func (user *User) GetOpenId() string {
	return user.OpenId
}

func (user *User) GetStats() *stat.StatInfo {
	return user.StatInfo
}

func (user *User) SetStats(data *stat.StatInfo) {
	user.StatInfo = data
}

func (user *User) SetSchema(schema *orm.Schema) {
	//user.Schema = schema
}
